<?php

class tempSolicitacaoAmostra extends Zend_Db_Table
{
    protected $_name = "_temp_solicitacao_amostra";
    
    public function del($id,$idcliente)
    {
        try {
            $this->_db->beginTransaction();
            $where = $this->_db->quoteInto(' where idtemp = ?', $id);
            $where .= $this->_db->quoteInto(' and  idCliente = ?', $idcliente);
            $result = $this->delete($where);
            $this->_db->commit();
            
        } catch (Zend_Exception $exc) {
             $this->_db->rollBack();
             $result = false;
        }


        return $result;
    }
    
    
    public function _getTempSolicitacao($id,$idcliente)
    {
        $select = $this->select()
                       ->from($this)
                       ->where(' idtemp = ?  ', $id)
                       ->where(' idCliente = ?', $idcliente);
        
        $result = $this->fetchAll($select)->toArray();
        return $result;
        
    }
    
    
    
    public function _vrfcExiste($id)
    {
        $select = $this->select()
                       ->from($this, 'count(idtemp) as Existe')
                       ->where(' idtemp = ?  ', $id);
        $result = $this->fetchRow($select);
        $id = $result->Existe;
        if($id > 0)
        {
           return true;
        }
        else
            return false;
               
    }
    
    
    
    public function _existeAmostra($idAmostra, $idtemp)
    {
        $select = $this->select()
                       ->from($this,'count(*) as qtd')
                       ->where(' idAmostra = ?', $idAmostra)
                       ->where(' idtemp = ?  ', $idtemp);
                  
        
        $resultado = $this->fetchRow($select);
         if ($resultado->qtd > 0){
                    return true;
                }
                else
                {
                    return false;
                }
               
    }
    
    
   
    public function removeAmostra($idtemp,$idAmostra)
    {
        $retorno = true;
        $where= "";
        $where  =  $this->getAdapter()->quoteInto("  idAmostra = ? ", $idAmostra);
        $where  .= $this->getAdapter()->quoteInto("  and idtemp = ? ", $idtemp);
        
        try {
            $this->_db->beginTransaction();
            $this->delete($where);
            $this->_db->commit();
        } catch (Zend_Exception $exc) {
            print_r($exc);
            $this->_db->rollBack();
            $retorno = false;
        }

        return $retorno;
                  
        
               
    }
   
    public function _getAmostras($idTemp,array $request)
    {

	$dados = array();
	
        
        
	$select = $this->select()
			->from($this, "count(*) as qtd")
			->where(" idtemp = ?", $idTemp);
        $result = $this->fetchRow($select);
     
	if($result->qtd > 0){
            $total_pages = ceil($result->qtd / $request['rows']);
	}else{
            $total_pages = 0;
	}
        
	if($request['page'] == 1){
            $start = 0;
	}else{
            $start = ($request['rows'] * $request['page']) - $request['rows'];
	}

	$dados['total']	= $total_pages;
	$dados['page']	= $request['page'];
	$dados['records'] = $result->qtd;
		
	$select = $this->select()
			->from($this)
                        ->where(" idtemp = ?", $idTemp)
                        ->limit($request['rows'], $start);
	
        if($request['sidx']){
            $select->order($request['sidx'] . " " . $request['sord']);
	}
        
        
	$resultado = $this->fetchAll($select)->toArray();
	   
        
	  
        
        $daoA = new Amostra();
        
         
        for($cont = 0; $cont < count($resultado); $cont++) {
            $amostra = $daoA->_getAmostra($resultado[$cont]['idAmostra']);
            
            $dados['rows'][$cont]['id'] = $resultado[$cont]['idAmostra'];
            $dados['rows'][$cont]['cell'] = array(
                                                $resultado[$cont]['idAmostra'],
                                                $amostra->inicial ,
                                                $resultado[$cont]['numColeta']
                                                
						);
	}
        
	return $dados;
      }
    
      public function _getMaxIdTemp()
     {
        $select = $this->select()
                       ->from($this,'max(idtemp)+1 as maxidtemp');
        
        $result = $this->fetchRow($select);
        $id = $result['maxidtemp'];
        if($id==null)
        {
            $id = 01;
        }
        
        return $id;
               
    }
    
    public function add($idtemp,$idAmostra,$numColeta,$idCliente)
    {
	$dados = array(
            		'idtemp' => $idtemp,
                        'data' => date('y-m-d'),
			'idAmostra'=> $idAmostra,
                        'idCliente'=> $idCliente,
                        'numColeta'=> $numColeta
	);  
          
         $this->_db->beginTransaction();
         try
         {
         
            $this->insert($dados); 
            $this->_db->commit();
            return true;
           
         }
         catch (Zend_Exception $e)
         {
            $this->_db->rollBack(); 
            print_r($e->getMessage());
            
            return false;
            
         }
         
       
	 
    }
      
    public function lista($id, array $request)
     {
        $dados = array();
	 
        $select = $this->select()
			       ->from($this, 'COUNT(*) AS qtd')
			       ->where(" idtemp = ? ",$id);
                
        $result = $this->fetchRow($select);

        if($result->qtd > 0){
            $total_pages = ceil($result->qtd / $request['rows']);
        }else{
            $total_pages = 0;
        }

        if($request['page'] == 1){
            $start = 0;
        }else{
            $start = ($request['rows'] * $request['page']) - $request['rows'];
        }

        $dados['total']	= $total_pages;
        $dados['page']	= $request['page'];
        $dados['records'] = $result->qtd;
        
        $select =  "select distinct tra.idAmostra, a.inicial,numColeta,c.NomeCurto Cliente,";
        $select .= " (select max(s.idSoSlicitacao)  from solicitacao_amostra sa  ";
        $select .= " inner join  solicitacao s on (sa.idSolicitacao = s.idSolicitacao) ";
        $select .= " where sa.idAmostra  = tra.idAmostra)  idSol";
        $select .= " from dbwebsor._temp_rotina_amostra tra ";
        $select .= " ( inner join amostra a on (tra.idAmostra = a.idAmostra) inner join cliente c on (c.idCliente = a.idCliente) ";
        $where  = $this->_db->quote(" where idtemp = ? ",$id );
        $select .= $where;
        
        if($request['sidx']){
            $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
        }else{
            $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
        }

        $resultado =  $this->_db->fetchAll($select);

        for ($cont = 0; $cont < count($resultado); $cont++)
        {
            $dados['rows'][$cont]['id'] =  $resultado[$cont]['idAmostra'];
            $dados['rows'][$cont]['cell'] =  array( $resultado[$cont]['idAmostra'],
                                                    $resultado[$cont]['inicial'],
                                                    $resultado[$cont]['numColeta'],
                                                    $resultado[$cont]['Cliente'],
                                                    $resultado[$cont]['idSol'] 
                                                  );
        }

        return $dados;
    }
}
